home *** CD-ROM | disk | FTP | other *** search
- Frequently Asked Questions About
- Windows Sockets Version 1.1
- 08 Dec 1993
-
- This FAQ has been put together by Mark Towfiq, with much-appreciated
- assistance from Jay Allard, Bruce Backman, Paul Brooks, Martin Hall,
- Simon Hewison, Mike Morse, Bob Quinn, Ed Schwalenberg, Bill Tang, Dave
- Treadwell, and Fred Whiteside. If you have any modifications to this
- FAQ, send them to towfiq@East.Sun.Com, and I will fold them into the
- next revision.
-
- First of all, the questions:
-
- 1. What is Windows Sockets?
- 2. What is the latest version?
- 3. When is the next rev of the specification? Why not sooner?
- 4. Where can I get a/the WINSOCK.DLL?
- 5. Why isn't there just one WINSOCK.DLL? Do I need a TCP/IP already to
- use it?
- 6. Where can I contact Windows Sockets application and implementation
- vendors? (include list of address, phone contacts)
- 7. Where can I get sample apps and tests?
- 8. Will Windows Sockets be in _____?
- 8.1. Will Windows Sockets be in Windows NT?
- 8.2. Will Windows Sockets be in Windows for Workgroups?
- 8.3. Will Windows Sockets be in DOS?
- 8.4. Will Windows Sockets be in Unix?
- 8.5. Will Windows Sockets be in Win32s?
- 9. What about standard APIs for ____?
- 9.1. What about standard APIs for FTP?
- 9.2. What about standard APIs for Telnet?
- 9.3. What about standard APIs for SNMP?
- 9.4. What about standard APIs for RPC?
- 9.5. What about standard APIs for TLI/XTI?
- 10.1. Does Windows Sockets work over protocols other than TCP/IP?
- 10.2. Will it?
- 11. Why no SOCK_RAW?
- 12. Why isn't it possible to share sockets between tasks?
- 13.1. How do I get my IP address?
- 13.2. Why no SIOCGIFADDR?
- 14. When should I use blocking vs. nonblocking sockets?
- 15. What about other socket options that BSD supports? Ioctls?
- 16. How can I get the local username?
- 17. Do I need to initialize the WSAData structure before calling
- WSAStartup?
- 18. If I write a Windows Sockets program for DOS, will I be able to
- communicate with a Sockets program on UNIX?
- 19. Is it possible to create sockets that map to a dll rather than an
- application? I have tried a WSAStartup() as part of my LibMain, but
- the sockets that are created are owned by the application, not by the
- DLL. It would be desirable for me to have some of the sockets that
- are opened have "A Global (DLL wide) Scope".
- 20. A *Class* of questions that could be answered are related to porting
- extant BSD applications to Windows Sockets: "How to I implement the
- xxxx function call in my Windows Sockets application?" (e.g. fcntl(),
- readv(), etc).
- 21. Is there a Pascal/Visual Basic/Visual Cobol header file for Windows
- Sockets?
- ----------------------------------------------------------------------
- 1. What is Windows Sockets?
-
- Answer: The Windows Sockets specification defines a network programming
- interface for Microsoft Windows which is based on the "socket" paradigm
- popularized in the Berkeley Software Distribution (BSD) from the University
- of California at Berkeley. It encompasses both familiar Berkeley socket
- style routines and a set of Windows-specific extensions designed to allow
- the programmer to take advantage of the message-driven nature of Windows.
-
- The Windows Sockets Specification is intended to provide a single API to
- which application developers can program and multiple network software
- vendors can conform. Furthermore, in the context of a particular version
- of Microsoft Windows, it defines a binary interface (ABI) such that an
- application written to the Windows Sockets API can work with a conformant
- protocol implementation from any network software vendor. This
- specification thus defines the library calls and associated semantics to
- which an application developer can program and which a network software
- vendor can implement.
-
- Network software which conforms to this Windows Sockets specification will
- be considered "Windows Sockets Compliant". Suppliers of interfaces which
- are "Windows Sockets Compliant" shall be referred to as "Windows Sockets
- Suppliers". To be Windows Sockets Compliant, a vendor must implement 100%
- of this Windows Sockets specification.
-
- Applications which are capable of operating with any "Windows Sockets
- Compliant" protocol implementation will be considered as having a "Windows
- Sockets Interface" and will be referred to as "Windows Sockets
- Applications".
-
- 2. What is the latest version?
-
- Answer: The latest version of the specification is 1.1.
-
- 3. When is the next rev of the specification? Why not sooner?
-
- Answer: The next rev. (2.0) will not be until towards the end of 1993. We
- need 1.1 of the API to become firmly settled and implemented first.
-
- 4. Where can I get a/the WINSOCK.DLL?
-
- Answer: You can most probably get one from the same place you got your
- TCP/IP software from.
-
- 5. Why isn't there just one WINSOCK.DLL? Do I need a TCP/IP already
- to use it?
-
- Answer: The Windows Sockets specification defines the top level of the DLL,
- the part which is called by user programs. The method a given WINSOCK.DLL
- will use to access TCP/IP (or NetWare, or AppleTalk, or DECNet ...) depends
- on the networking package you have installed, and therefore must vary. A
- WINSOCK.DLL is therefore just an interface to whatever existing protocol
- you already have installed. An illustration would help:
-
- +---------------------------------+
- | WinSock compliant application |
- +---------------------------------+
- +---------------------------------+ <--- WinSock API
- | Windows Sockets DLL |
- +---------------------------------+
- +---------------------------------+ <--- Protocol Stack API
- | Protocol Stack (e.g. TCP/IP) | (typically proprietary)
- +---------------------------------+
- +---------------------------------+ <--- Hardware Driver API
- | Hardware Driver | (Packet Driver, NDIS, ODI,
- +---------------------------------+ or proprietary)
- +---------------------------------+ <--- Hardware Interface
- | Network (hardware) Interface | (hardware specific)
- +---------------------------------+
- |
- +----> network
-
- 6. Where can I contact Windows Sockets application and implementation
- vendors? (include list of address, phone contacts)
-
- Answer:
-
- Date: Tue, 6 Apr 93 12:53:37 PDT
- From: tang@documentum.com (Bill Tang)
- To: winsock@Microdyne.COM
- Subject: vendor list (long)
-
- Thanks to all that responded to my previous inquiry of vendor
- implementations. I am posing a summary and will keep the list updated
- if I receive more information.
- -------------------------------------------------------------------------
- SUMMARY
- -------------------------------------------------------------------------
- (old list at 11/23/92)
- Company BETA FINAL Update (4/6/93)
- -------------------------------------------------------------------------
- 3Com Corp Q1'93 Q2'93 ?
- Beame & Whiteside Q2'93 Shipping Shipping v1.1 DLL with stack
- Distinct Corp Q3'92 Shipping ?
- FTP Software Q4'92 Shipping shipping v1.1 TCP/IP stack
- with DLL; DLL
- available on BBS or
- anonymous-ftpable on
- vax.ftp.com;
- Development Kit being
- updated to include
- v1.1 Windows Sockets
- support.
-
- Frontier Tech Q3'92 Shipping ?
- IBM Q4'92 Q1'92 ?
- JSB Corporation Q4'92 Q4'92 ?
- Lan Design Q4'92 Q1'93 ?
- Lanera Corp Shipping v1.1 TCP/IP stack
- Microdyne Q4'92 Q1'93 ?
- Microsoft(W NT 32b) Q3'92 Q2'93 Win32 SDK March release
- Microsoft(W NT 16b) Q4'92 Q2'93 Win32 SDK March release
- Microsoft(W 3.x 16b) Q4'92 Q2'93 ?
- NetManage Q4'92 Q4'92 shipping v1.1 DLL
- Network Research ? ? ?
- Novell ? ? ?
- Spry (stack) supports Winsock v1.1
- Sun Microsystems Q4'92 1stHalf'93 ?
- Ungermann Bass ? ? v1.1 TCP/IP stack and DLL:
- Beta Q1'93, Final Q2'93
- Walker Richer Quinn Q4'92 Q1'93 ?
- Wollongong Q4'92 Q1'93 ?
-
- 7. Where can I get sample applications and tests?
-
- Answer: Files and information related to the Windows Sockets API are
- available via FTP (user: "anonymous", password: your e-mail address)
- on the host SunSite.UNC.EDU, in /pub/micro/pc-stuff/ms-windows/winsock.
- Note: if you do not have FTP access to the Internet, send a message
- with the word "help" in the body to either ftpmail@SunSite.UNC.Edu, or
- ftpmail@DECWRL.DEC.Com (in the UK mail to ftpmail@doc.ic.ac.uk), to
- obtain information about the FTP to Mail service there.
-
- 8. Will Windows Sockets be in _____?
-
- 8.1. Will Windows Sockets be in Windows NT?
-
- Answer: Yes. In 16 and 32-bit versions.
-
- 8.2. Will Windows Sockets be in Windows for Workgroups?
-
- Answer: Yes.
-
- 8.3. Will Windows Sockets be in DOS?
-
- Answer: Paul Brooks of TurboSoft (paul@abccomp.oz.au) tells me:
-
- As for a Windows Sockets for DOS - we have a library that is
- pretty much complete. The goal was to produce a DOS library and
- Binary API which would allow developers to code applications using
- the Windows Sockets 1.1 spec. and have it run exactly the same
- under DOS as Windows - blocking and non-blocking modes,
- Asynchronous calls, the works. Apart from some AsyncGetXXXbyYYY
- calls the rest works, although it is not possible to capture all
- the Windows-specific semantics of some areas.
-
- I am sure you can contact him for more information. JSB also has a
- standardized Berkeley Sockets API for DOS which provides access to all
- TCP/IP implementations.
-
- 8.4. Will Windows Sockets be in UNIX?
-
- Answer: Well, since it came from BSD UNIX, there's not much need.
-
- 8.5. Will Windows Sockets be in Win32-S?
-
- Answer: Yes, Win32s 1.1 contains a thunking layer that converts 32-bit
- Windows Sockets calls to 16-bit Windows Sockets. It should work on
- top of any 16-bit WINSOCK.DLL.
-
- 9. What about standard APIs for ____?
-
- 9.1. What about standard APIs for FTP?
-
- Answer: Not yet.
-
- 9.2 What about standard APIs for Telnet?
-
- Answer: Not yet.
-
- 9.3 What about standard APIs for SNMP?
-
- Answer: In the works. Send e-mail to listserv@SunSite.UNC.EDU with
- "subscribe winsnmp" in the body of the message to join the list.
-
- 9.4 What about standard APIs for RPC?
-
- Answer: Microsoft will be providing an implementation of DCE RPC. Also in
- the works is the definition of a standard implementation of ONC RPC (known
- as RPC for Windows) which will be made available by multiple vendors. To
- contribute to the discussion, send email to rpc4win@wco.ftp.com.
-
- 9.5 What about standard APIs for TLI/XTI?
-
- Answer: No, not yet. Vendors chose to do Windows Sockets because of the
- sockets application and knowledge base, however anyone out there is free to
- try a Windows TLI/XTI Specification.
-
- 10.1. Does Windows Sockets work over protocols other than TCP/IP?
-
- Answer: Yes, it does. But we know of no vendors supplying one currently.
-
- 10.2. Will it?
-
- Answer: Yes. Windows NT will include mechanisms for multiple protocol
- support in Windows Sockets, both 32-bit and 16-bit.
-
- 11. Why no SOCK_RAW?
-
- Answer: SOCK_RAW is optionally implemented by many major Windows Sockets
- vendors. It is not mandated now because: 1) not every stack vendor can
- supply a complete SOCK_RAW interface, and 2) we did not have time to define
- the minimal subset every vendor could provide (e.g. maybe just ICMP).
-
- 12. Why isn't it possible to share sockets between tasks?
-
- Answer: The real answer is that it wasn't considered sufficiently important
- for 1.1, but is high on the list for inclusion in 2.0.
-
- 13.1. How do I get my IP address?
-
- Answer: Do a gethostbyname() on the output from gethostname().
-
- 13.2. Why no SIOCGIFADDR?
-
- Answer: It was not included because there were concerns it could not be
- supported across platforms. It may be included in version 2.0 of the spec.
-
- 14. When should I use blocking vs. non-blocking sockets?
-
- Answer: Try to use non-blocking sockets whenever possible; certainly if you
- are coding a Windows application from scratch. Blocking sockets should
- only be used when trying to maintain portability between UNIX/MS-DOS and
- Windows.
-
- 15. What about other socket options that BSD supports? Ioctls?
-
- Answer: Some vendors may support them. Do not rely on ones not explicitly
- mentioned in the specification, however.
-
- 16. How can I get the local username?
-
- Answer: Based on a suggestion from Simon Hewison
- (p0063886@cs3.oxford-brookes.ac.uk), one idea is to call WNetGetUser()
- in the NETWORK.DRV. If a vendor has supplied a NETWORK.DRV then this
- will work, if not you can just use some other method. Thus you could
- write a bit of code thus:
-
- WNetGetUser(szNetUserId,sizeof(szNetUserId);
- if (strlen(szNetUserId)==0) {
- /* call some other method of getting
- userid, eg. the lan manager call NetWkstaGetInfo */
- }
-
- Information on this API call is in the Windows Device Driver Adaption
- Guide.
-
- 17. Do I need to initialize the WSAData structure before calling
- WSAStartup?
-
- Answer: No, WSAStartup does not retrieve the contents of the WSAData
- structure pointed to, it fills it in.
-
- 18. If I write a Windows Sockets program, will I be able to communicate
- with a Sockets program on UNIX or any other non Windows platform?
-
- Answer: Absolutely! This common question is the result of confusing
- protocols with the APIs; communicating programs need not have been
- created with the same APIs, as long as they are using the same
- (transport & network) protocols.
-
- 19. Is it possible to create sockets that map to a dll rather than an
- application? I have tried a WSAStartup() as part of my LibMain, but the
- sockets that are created are owned by the application, not by the DLL. It
- would be desirable for me to have some of the sockets that are opened have
- "A Global (DLL wide) Scope".
-
- Answer: The way this situation has been dealt with by developers is to have
- your DLL create a "helper process" which will perform all Windows Sockets
- operations on behalf of your applications (thereby having all sockets owned
- by the helper process' task).
-
- 20. A *Class* of questions that could be answered are related to porting
- extant BSD applications to Windows Sockets: "How to I implement the xxxx
- function call in my Windows Sockets application?" (e.g. fcntl(), readv(),
- etc).
-
- Answer: In general, you will have to code such functions yourself, although
- it would not hurt to suggest them for the next revision of the
- specification as well.
-
- 21. Is there a Pascal/Visual Basic/Visual Cobol header file for Windows
- Sockets?
-
- Answer: The Pascal and Visual Basic forms are already in the FTP
- archive. Look there for any other header files that people may have
- developed so far. It should be pointed out that not all the Winsock
- functions can be called from Visual Basic and the subset that can be
- called are not really enough for a true app (for example, you can't
- call gethostbyname()). To use Winsock from VB requires a translation
- DLL that will probably have to be written in C. To date, there is no
- public domain implementation, although several vendors have announced
- toolkits for Winsock for VB.
-